package com.orderVideo.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.orderVideo.entity.Order;
import com.orderVideo.enums.OrderQueryType;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
* @author Sakur
* @description 针对表【order(订单表)】的数据库操作Service
* @createDate 2025-03-27 14:43:48
*/
public interface OrderService extends IService<Order> {
    Order createOrder(Order requestOrder);
    boolean updateOrderStatus(Long orderId, Integer status);
    Order getOrderById(Long orderId);
    
    // 用户查询订单方法
    List<Order> queryOrders(Long userId, OrderQueryType queryType);
    
    // 用户分页查询订单方法
    IPage<Order> queryOrdersPage(Long userId, Long page, Long size, OrderQueryType queryType);
    
    // 管理员查询订单方法（带分页）
    IPage<Order> queryOrdersPage(Long page, Long size, OrderQueryType queryType);
    
    // 管理员删除订单
    boolean deleteOrder(Long orderId);
    
    /**
     * 计算用户今日收益
     * @param userId 用户ID
     * @return 今日收益金额
     */
    BigDecimal calculateUserTodayEarnings(Long userId);

    /**
     * 计算用户总收益
     * @param userId 用户ID
     * @return 总收益金额
     */
    BigDecimal calculateUserTotalAmount(Long userId);

    /**
     * 更新订单信息
     * @param order 订单信息
     * @return 是否成功
     */
    boolean updateOrder(Order order);

    /**
     * 保存订单信息
     * @param order 订单信息
     * @return 是否成功
     */
    boolean saveOrder(Order order);
}
